package com.yiwenup.leetcode.hot;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @PROJECT struct-algorithm
 * @PACKAGE com.yiwenup.leetcode.hot
 * @Author yiwenup
 * @Date 2022-02-28 10:44:18
 * <p>
 * @DESCRIPTION https://leetcode-cn.com/problems/queue-reconstruction-by-height/
 */
public class No0406 {
    /**
     * 执行用时：5 ms, 在所有 Java 提交中击败了99.61%的用户
     * 内存消耗：42.2 MB, 在所有 Java 提交中击败了14.35%的用户
     */
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people, (o1, o2) -> {
            if (o1[0] != o2[0]) {
                return o2[0] - o1[0];
            }
            return o1[1] - o2[1];
        });

        List<int[]> res = new ArrayList<>();
        for (int[] person : people) {
            res.add(person[1], person);
        }

        return res.toArray(new int[res.size()][]);
    }
}
